#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

/*
 * 计算文件的大小
 * */
static int get_file_type(const char *filename)
{
	struct stat f_st;
	if(stat(filename, &f_st) < 0)
	{
		perror("stat()");
		exit(-1);
	}

	if(S_ISREG(f_st.st_mode))
		return '-';
	else if(S_ISDIR(f_st.st_mode))
		return 'd';
	else if(S_ISCHR(f_st.st_mode))
		return 'c';
	else if(S_ISBLK(f_st.st_mode))
		return 'b';
	else if(S_ISFIFO(f_st.st_mode))
		return 'p';
	else if(S_ISLNK(f_st.st_mode))
		return 'l';
	else if(S_ISSOCK(f_st.st_mode))
		return 's';
	else
		return '*';
}

int main(int argc, char *argv[])
{
	if(argc < 2)
	{
		fprintf(stderr, "Usage...\n");
		exit(-1);
	}
	
	printf("%lld\n",(long long)get_file_type(argv[1]));

	exit(0);
}
